package cn.edu.cdp.jxgl_springboot_web.interceptor;

import cn.edu.cdp.jxgl_springboot_web.util.JwtUtil;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

// 定义拦截器
@Component
public class LoginCheckInterceptor implements HandlerInterceptor {
    // 前置方式
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("preHandle ...");
        // 1. 获取请求 url
        // 2. 判断请求 url 中是否包含 login，如果包含，则放行
        // 1. 和 2. 在 WebConfig 中

        // 3. 获取请求头中的 token
        String token = request.getHeader("token");
        System.out.println("从请求头中获取的令牌：" + token);

        // 4. 判断 token 是否存在，不存在，则未登录
        if (token == null || token.isEmpty()) {
            System.out.println("未登录");
            return false;
        }

        // 5. 解析 token 中的 JWT
        try {
            JwtUtil.parseJwt(token);
        } catch (Exception e) {
            System.out.println("令牌解析失败！");
            return false;
        }

        // 6. 放行
        return true;
    }
}
